#include <list>
#include <deque>
#include <vector>
#include <memory>
#include "../resources/Sales_data.h"

using namespace std;

class NoDefault
{
    public:
        NoDefault() = delete;
        NoDefault(int ival): num(ival) { };
        void print() { cout << num << " "; };
    private:
        int num;
};

shared_ptr<NoDefault> init();

int main()
{
    list<Sales_data> lst;   // 保存 Sales_data 对象的 list
    deque<double> dq;       // 保存 double 的 deque

    vector<vector<string>> lines;   // vector 的 vector

    // 假定 NoDefault 是一个没有默认构造函数的类型
    vector<NoDefault> v1(10, *init()); // 正确：提供了元素初始化器
    // vector<NoDefault> v2(10);       // 错误：必须提供一个元素初始化器

    for (auto it = v1.begin(); it != v1.end(); ++it)
        it->print();
    cout << endl;
}

shared_ptr<NoDefault> init()
{
    shared_ptr<NoDefault> obj = make_shared<NoDefault>(NoDefault(1));
    return obj;
}